package com.dongzili.postgresql.common.aspect;


import cn.hutool.core.lang.UUID;

/**
 * traceId 工具类，负责生成和管理 traceId
 */
public class TraceIdUtils {
    // 使用 ThreadLocal 存储当前线程的 traceId
    private static final ThreadLocal<String> TRACE_ID_CONTEXT = new ThreadLocal<>();

    /**
     * 生成随机的 traceId（UUID去掉横线）
     */
    public static String generateTraceId() {
        return UUID.fastUUID().toString();
    }

    /**
     * 设置当前线程的 traceId
     */
    public static void setTraceId(String traceId) {
        TRACE_ID_CONTEXT.set(traceId);
    }

    /**
     * 获取当前线程的 traceId
     * 若未设置则返回空字符串，避免 NPE
     */
    public static String getTraceId() {
        String traceId = TRACE_ID_CONTEXT.get();
        return traceId == null ? "" : traceId;
    }

    /**
     * 清除当前线程的 traceId（必须在请求结束时调用，避免内存泄漏）
     */
    public static void clear() {
        TRACE_ID_CONTEXT.remove();
    }
}
    